#!/bin/perl


#$variable=$ENV{'v_Ambiente_exportada'};


#MANEJADOR;

&main();

sub main{
	
	local($escritura) = 0;
	local($ayuda) = 0;
	local($operacion);
	local($error) = "";
    $eaea = \&hola;
    my($seleccionOk) = &leerOpciones();
	my($generadorReporte) = 0;
	if($error) {
        	print "$error"."\n";
		$ayuda = 1;
	}	
	if ( ! $seleccionOk && ! $ayuda) {
	   print 'Por favor indique una operacion valida'."\n";
	   $ayuda = 1;
	}

	if ( $ayuda ) {
	  imprimirAyuda();
          exit 0;
	}
	
	my($impresora);
    if( $escritura ){
		$impresora = \&imprimirAArchivo;
	} else {
		$impresora = \&imprimirAPantalla;
	}
	$operacion->($impresora);
	exit 0;
}

sub leerOpciones{
   my($seleccionado) = 0; 
   #TODO validar que la cantidad de parametros sea una al menos.
   my $op;
   while (my ($index, $value) = each @ARGV) {
		if ($value eq "-w") {
	 	  $escritura = 1;
	 	  next;
		}
		if ($value eq "-a") {
		  $ayuda = 1;
		  next;
		}
		if ($value eq "-i") {
		  if (!$seleccionado) {
			  $operacion = \&imprimirInvitados;
			  $seleccionado = 1;
		  } else {
			$error = "Por favor, seleccione solo una operacion"			
		  }
		   next;
		}
		if ($value eq "-d") {
		  if (!$seleccionado) {
			  $operacion=  \&imprimirDisponibilidad;
			  $seleccionado = 1;
		  } else {
			$error = "Por favor, seleccione solo una operacion"			
		  }
		  next;
	  	}
		if ($value eq "-r") {
		  if (!$seleccionado) {
			  $operacion = \&imprimirRanking;
			  $seleccionado = 1;
		  } else{
			$error = "Por favor, seleccione solo una operacion"			
		  }
		  next;
		}
		if ($value eq "-t") {
		  if (!$seleccionado) {
			  $operacion=\&imprimirTickets;
			  $seleccionado = 1;
		  } else{
			$error = "Por favor, seleccione solo una operacion"			
		  }
		  next;
		}		     
}
	
   $op = $seleccionado;

}
sub imprimirAyuda {
	print 'Ayuda'."\n";
}

sub imprimirInvitados{
	#Recibe por parametro la funcion que realiza la impresion
	my($impresora) = @_;
	my($linea) = "Invitados"."\n";
	$impresora->($linea);


}

sub imprimirDisponibilidad{
	#Recibe por parametro la funcion que realiza la impresion  
	my($impresora) = @_;
	my($linea) = "Disponibilidad"."\n";
	$impresora->($linea);
  
}

sub imprimirRanking{
	#Recibe por parametro la funcion que realiza la impresion  
	my($impresora) = @_;
	my($linea) = "Ranking"."\n";
	$impresora->($linea);

}

sub imprimirTickets{
	#Recibe por parametro la funcion que realiza la impresion  
	my($impresora) = @_;
	my($linea) = "Tickets"."\n";
	$impresora->($linea);
}


sub imprimirAArchivo{
	my($linea) = @_;
	#ACA SE HACE REFERENCIA AL MANEJADOR.
		print 'Archivo '."$linea ";
}

sub imprimirAPantalla{
	my($linea) = @_;
	#sale por standard
	print 'Pantalla '."$linea ";
	;
}
